/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package grest.model;

import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Time;
import java.sql.Date;
import java.util.*;

/**
 *
 * @author Agustin
 */
public class ViewGeneral implements Entidad {
    private Integer nro_mov;
    private Integer nro_mesa;
    private String ubicacion;
    private Integer cant_comensales;
    private java.sql.Date fecha_apertura;
    private java.sql.Time hora_apertura;
    private String apellido_cli;
    private String nombre_cli ;
    //private String apellido_mozo;
    //private String nombre_mozo;
    private Integer nroMozo;
    private boolean changed;   
    private boolean prechanged=false;   
    
    /**
     * Constructor
     * @return 
     */
    public ViewGeneral(Integer mozo){
        this(1,
            0,
            "IN",
            1,
            new Date(Calendar.YEAR,Calendar.MONTH,Calendar.DATE),
            new Time(Calendar.HOUR, Calendar.MINUTE, Calendar.SECOND),
            "",
            "",
            mozo
            );
    }
    
    
    public ViewGeneral(Integer nroMov,Integer nro_mesa,String ubicacion,Integer comensales,java.sql.Date fecha,Time hora,String apeCli,String nomCli,Integer mozo){
        this.changed = false;
        this.nro_mov = nroMov;
        this.nro_mesa = nro_mesa;
        this.ubicacion = ubicacion;
        this.cant_comensales = comensales;
        this.fecha_apertura = fecha;
        this.hora_apertura = hora;
        this.apellido_cli = apeCli;
        this.nombre_cli = nomCli;
       // this.apellido_mozo = apeMozo;
       // this.nombre_mozo = nomMozo;
        this.nroMozo=mozo;
    }
    
    
         /**
     * Constructor de la clase ViewGeneral que obtiene como parametro un Resultset
     * @param rs
     * @throws SQLException 
     */
    public ViewGeneral(ResultSet rs) throws SQLException {
        this.changed = false;
        // valores para un nuevo objeto Test
        setNroMov(rs.getInt("ID_MOVIMIENTO"));
        setNroMesa(rs.getInt("NRO_MESA"));
        setUbicacionMesa(rs.getString("UBICACION"));
        setCantComensales(rs.getInt("CANT_COMENSALES"));
        setFechaApertura(rs.getDate("FECHA_APERTURA"));
        setHoraApertura(java.sql.Time.valueOf(rs.getString("HORA_APERTURA")));
        setApellidoCli(rs.getString("APELLIDO_CLI"));
       setNombreCli(rs.getString("NOMBRE_CLI"));
       // setApellidoMozo(rs.getString("APELLIDO_MOZO"));
       // setNombreMozo(rs.getString("NOMBRE_MOZO"));
        setChanged(false);
    }
    
    
    //Metodos Getters    /////////////////////////////////
    public Integer getNroMov(){
        return this.nro_mov;
    }
    
    
    public int getNroMesa(){
        return this.nro_mesa;
    }
    
    public String getUbicacionMesa(){
        return this.ubicacion;
    }
    
    public int getCantComensales(){
        return this.cant_comensales;
    }
    
    public Date getFechaApertura(){
        return this.fecha_apertura;
    }
    
    public String getHoraApertura(){
        return this.hora_apertura.toString();
    }
    
    public String getApellidoCli(){
        return this.apellido_cli;
    }
    
    public String getNombreCli(){
        return this.nombre_cli;
    }
    public Integer getNroMozo(){
        return this.nroMozo;
    }
    
    /*public String getApellidoMozo(){
        return this.apellido_mozo;
    }
    
    public String getNombreMozo(){
        return this.nombre_mozo;
    }*/
    public void setMozo(Integer nro){
        this.nroMozo=nro;
    }
    
    //Metodos Setters  ///////////////////////////////
    public void setNroMov(Integer nro){
        this.nro_mov = nro;
    }
    
    public void setNroMesa(Integer i){
        this.nro_mesa = i;
        setChanged(true);
    }
    
    public void setUbicacionMesa(String s){
        this.ubicacion = s;
        setChanged(true);
    }
    
    public void setCantComensales(Integer cant){
        this.cant_comensales = cant;
        setChanged(true);
    }
    
    public void setFechaApertura(java.sql.Date fecha){
        this.fecha_apertura = fecha;
        setChanged(true);
    }
    
    public void setHoraApertura(java.sql.Time t){
        this.hora_apertura = t;
        setChanged(true);
    }
    
    public void setApellidoCli(String s){
        this.apellido_cli = s;
        setChanged(true);
    }
    
    public void setNombreCli(String s){
        this.nombre_cli = s;
        setChanged(true);
    }
    
    /*public void setApellidoMozo(String s){
         this.apellido_mozo = s;
         setChanged(true);
    }
    
    public void setNombreMozo(String s){
        this.nombre_mozo = s;
        setChanged(true);
    }*/
    
    
    @Override
    public int getColumnCount(){
        return 7;
    }
    
    
    @Override
    public Class getColumnClass(int c){
        switch(c){
            case 0 : return Integer.class;
            case 1 : return String.class;
            case 2 : return Integer.class;
            case 3 : return Date.class;
            case 4 : return String.class; 
            case 5 : return String.class;
            case 6 : return String.class;
                
        }
    return null;
    }
    
    @Override
    public String getColumnTitle(int columna){
        switch(columna){
            case 0 : return "NRO_MESA";
            case 1 : return "UBICACION";
            case 2 : return "CANT_COMENSALES";
            case 3 : return "FECHA_APERTURA";
            case 4 : return "HORA_APERTURA";
            case 5 : return "APELLIDO_CLI";
            case 6 : return "NOMBRE_CLI";
        }
    return null;
    }
    
    
    @Override
    public Object getColumnValue(List<Entidad> e,int row,int col) {
        switch(col) {
            case 0:
                return ((ViewGeneral) e.get(row)).getNroMesa();
            case 1:
                return ((ViewGeneral) e.get(row)).getUbicacionMesa();
            case 2:
                 return ((ViewGeneral) e.get(row)).getCantComensales();
            case 3:
                 return ((ViewGeneral) e.get(row)).getFechaApertura();
            case 4:
                 return ((ViewGeneral) e.get(row)).getHoraApertura();
            case 5:
                 return ((ViewGeneral) e.get(row)).getApellidoCli();
            case 6:
                 return ((ViewGeneral) e.get(row)).getNombreCli();
        }
        return null;
    }
    
    
    @Override
     public void setColumnValue(List<Entidad> e,int row,int col,Object value) {
        switch(col) {
           case 0:
                ((ViewGeneral) e.get(row)).setNroMesa((Integer) value);
                break;
           case 1:
                ((ViewGeneral) e.get(row)).setUbicacionMesa((String) value);
                break;
           case 2:
                ((ViewGeneral) e.get(row)).setCantComensales((Integer) value);
                break;
           case 3:
                ((ViewGeneral) e.get(row)).setFechaApertura((java.sql.Date) value);
                break;
           case 4:
                ((ViewGeneral) e.get(row)).setHoraApertura((java.sql.Time) value);
                break;
           case 5:
                ((ViewGeneral) e.get(row)).setApellidoCli((String) value);
                break;
           case 6:
                ((ViewGeneral) e.get(row)).setNombreCli((String) value);
                break;
        }
     }
    
    @Override
     public void loadTuplas(List<Entidad> tipoEntidad, ResultSet tuplas) throws SQLException{
         tipoEntidad.add(new ViewGeneral(tuplas));
     }   
    
    @Override
    public String getSelectQuery(){
        return "select id_movimiento,nro_mesa,ubicacion,cant_comensales,fecha_apertura,hora_apertura,"
                + "apellido_cli, nombre_cli from v_estado_gral where nro_mozo="+this.nroMozo;
    }
    
    
    @Override
    public String getInsertQuery() {
        throw new UnsupportedOperationException("Not supported.");
    }

    @Override
    public String getUpdateQuery() {
        throw new UnsupportedOperationException("Not supported.");
    }

    @Override
    public String getDeleteQuery() {
        throw new UnsupportedOperationException("Not supported.");
    }

    @Override
    public boolean isChanged() {
        return changed;
    }
    
    
    @Override
    public boolean isColumnEditable(int columna){
        /*switch(columna){
            case 0 : return false;
            case 1 : return false;
            case 2 : return false;
            case 3 : return false;
            case 4 : return false;
            case 5 : return false;
            case 6 : return false;
            case 7 : return false;
            case 8 : return false;
        }*/
        return false;
    }
    
    @Override
    public void setChanged(boolean f){
        changed = f;
    }

    public void setPreChanged(boolean prechanged){
        this.prechanged=prechanged;
    }
     
    public boolean isPreChanged(){
        return prechanged;
    }

    @Override
    public String onPreInsertQuery() {
        throw new UnsupportedOperationException("No soportado");
    }
    
    @Override
    public void setID(Object value){
        throw new UnsupportedOperationException("No soportado");
    }
}
    